package file;

import java.io.File;

/**
 * Created by 5406160@qq.com on LiBoWen 李博闻.
 *
 * @ClassName : FileDemo7
 * @Author : 54061
 * @Date: 2022/2/12 15:20
 */
/*
  递归:
        1. 找规律 -> 有文件夹,就要调用listFiles()
        2. 找出口 -> 是文件
        3. 定义方法,方法要有形参 -> 形参 : 文件夹路径 File file(第一次调用方法时传入的根目录路径)
        4. 在方法内部调用方法本身
        5. 再次调用方法的时候,需要有实参的变化,变化方向要往出口方向前进
            上一次调用时,传入的是父路径
            本次调用时,传入的是父路径中的子路径
 */
public class FileDemo7 {
    public static void main(String[] args) {
        //创建File对象
        File file = new File("");

        printDirs(file);//第一次调用方法: 根目录
    }

    public static void printDirs(File root){//file -> 根
        String fileName = root.getName();
        System.out.println("fileName = " + fileName);

        //写出口
        if (root.isFile()){//找出口 -> 是文件
            return; //是文件打印了文件的名称后,就让其出栈
        }


        //规律 : 遍历
        //能从上面的if下来,说明root参数接收的路径指向的一定是一个文件夹
        File[] files = root.listFiles();
        for (File file : files) {//file对象 代表是 root对象的 子文件/子文件夹对象
            //直接递归
            printDirs(file);//再次调用方法时,调用方法时file对象的子路径
        }
    }
}
